<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<table id="tbl"></table>
	<script>
		var users = [
			{name:"张三",age:18,sex:'男'},
			{name:"张卫红",age:58,sex:'女'},
			{name:"张二狗",age:24,sex:'女'},
			{name:"张春华",age:35,sex:'女'},
			{name:"张小明",age:12,sex:'男'},
			{name:"张新发",age:24,sex:'男'},
		];

		/**
			filter，过滤，回调返回false则滤掉
		*/
		users = users.filter(function (a,b,c) {
			// 50岁以上的人去掉，18岁以下的人去掉，
			return a.age <= 50 && a.age >= 18;
		});

		// 要求把年龄大的排在前面，如果年龄相等，则把男性排在前面

		users.sort(function (a,b) {
			var r= b.age-a.age;
			if(r==0){
				return b.sex.charCodeAt(0)-a.sex.charCodeAt(0);
			}
			return r;
		});

		//map 回调返回的值组成新的数组
		var tab_str = users.map(function (a) {
			return `<tr>
			<td>${a.name}</td>
			<td>${a.age}</td>
			<td>${a.sex}</td>
			</tr>
			`;
		}).reduce(function (a,b) {//reduce，将每次返回的值合并成返回值，用于统计
			return a+b;
		});

		var tbl = document.querySelector("#tbl");
		tbl.innerHTML = tab_str;


		/*
			map => 每一次回调返回的值组成新的数组，新数组的长度和原数组长度一样
			filter => 回调返回布尔值，true则留着，false则去掉，组成新数组
			some => 回调返回布尔值，只要有一个返回true，则最终结果为true
			every => 回调返回布尔值，所有返回true，则最终结果为true
			reduce => 用来做统计，将每次回调的结果注入到第一个参数中
			forEach => 普通的迭代

		*/

		// 4576 ==》 
		var a=4576;
		var result = [ 100 , 50 , 20 , 10 , 5 , 1].map(function (item) {
			var zhangshu = Math.floor(a/item);//Math.ceil
			a-= zhangshu * item;
			return zhangshu;
		}).reduce(function (a,b) {
			return a+b;
		});

		// 阿拉伯数字转大写
		// 年龄求生肖
		// 人民币的组成

	</script>
</body>
</html>